Hadoop大数据存算分离需要什么样的存储?
据IDC预测,到2021年,至少50%的全球GDP将由数字化驱动。面对海量数据,企业亟需通过更加现代化、敏捷、高性能的IT基础设施来推进业务持续发展。
当今世界,只有很少的数据得到了分析,还有巨大的待开发潜能,在高达3000亿美元的以数据为驱动的市场中,中国在人工智能、物联网和5G等技术方面已经逐渐成熟,为中国数字经济蓬勃发展奠定了基础,而那些尚未被充分利用的数据,就是新商业价值的关键元素。
01数据湖的价值数据湖支持以其本机或接近本机的格式存储数据,从而为高技能的数据科学家和分析师提供了未完善的数据视图。数据湖提供了一个没有折衷的环境,以及相应的记录分析系统所共有的保证和利益,即语义一致性,治理和安全性。
因此,数据湖特别适合科学家对未知数据和未知问题的探索。很多暂时得不到分析的数据,可以暂时统一保存在数据湖里。
02Hadoop是数据湖最常用的解决方案Hadoop的一个主要优势是支持围绕未知数据和未知问题的这些探索性用例。它在LDW(逻辑数据仓库)中扮演的角色在基于数据管理基础设施模型的右上象限 - 未知数据领域和未知问题。由于Hadoop技术针对语义灵活性进行了优化,因此它可以与传统的结构化数据仓库并列,从而实现更广泛的数据类型,最终用户和用例。
虽然现在Hadoop没有前几年那么热,但是,它依然是数据湖最常用的解决方案。最近的Gartner研究数据表明,Hadoop的部署和需求仍然很大并且正在增长。在最近的一项调查中,有235名受访者表示,34%的受访者目前正在使用Hadoop进行数据和分析工作,另有55%的受访者计划在未来24个月内进行调查,总计达到89%。这是Gartner 2016年研究以来的需求最大幅度增加。
03HDFS的局限Apache Hadoop是一个高度可扩展的系统,广泛应用于大数据存储和分析。Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统。
NameNode:NameNode 上保存着整个HDFS的命名空间和数据块映射关系。所有的元数据操作都将在NameNode中处理;
DataNode:DataNode将HDFS数据以文件的形式存储在本地的文件系统中,它并不知道有关HDFS文件的信息;
DFSClient:HDFS的客户端,在Hadoop文件系统中,它封装了和HDFS其他实体的复杂交互关系,为应用提供了一个标准的、简单的接口。
再有,因为写锁具有排他性,所以对性能影响更加明显。当有写请求正在被处理,则其他所有请求都必须排队等待,直到当前写请求被处理完成释放锁。当集群规模增加和负载增高后,全局锁将逐渐成为NameNode性能瓶颈。
04S3A的不足原生的Hadoop中包含一个的S3A连接器,基于Amazon Web Services (AWS) SDK实现的。Hadoop S3A允许Hadoop集群连接到任何与S3兼容的对象存储。XSKY的对象存储产品XEOS兼容S3协议,所以可以通过S3A连接器与Hadoop应用进行交互,但这种方式存在比较大的局限性。
由于所有的数据都需要先经过对象路由和S3网关,所以在IO路径上就会多了对象路由和S3网关这一跳;
S3A因为通过S3 SDK来实现,所以并不支持标准Hadoop文件系统的追加写操作;
S3A 因为使用标准的S3协议,所以势必会在一些偏文件风格的接口上做更多的判断,导致客户端逻辑复杂。如判断一个目录,需要多次REST请求才能完成,同时过多的REST请求将会对性能造成影响。
05XSKY HDFS Client应运而生为了解决S3A的问题,XSKY开发了XSKY HDFS Client——XEOS存储集群和Hadoop计算集群量身打造的连接器。通过XSKY HDFS Client(简称“XHC”),Hadoop应用可以访问存储在XEOS中的所有数据,这就避免了传统的Hadoop应用在进行数据分析前,还要将数据由业务存储移动到分析存储HDFS中,也就是常见的ETL过程。
XSKY HDFS Client相当于HDFS的DFSClient,为Hadoop应用提供了标准的 Hadoop文件系统API。在每个计算节点上,Hadoop应用都将使用XSKY HDFS Client (JAR) 执行 Hadoop文件系统的操作,并且屏蔽了Hadoop应用与XEOS集群交互的复杂性。在XEOS集群中,每一个存储节点都等效于HDFS的NameNode和DataNode。
06XSKY HDFS Client 的架构与实现相比于S3A通过S3 SDK封装HTTP请求的方式访问XEOS不同,XSKY HDFS Client可以直接访问存储集群的OSD,IO路径上要短得多。
由于省掉了对象路由和S3网关这一层,所以性能会好于S3A;
XEOS的NFS网关库的write接口具有追加写的功能,可以匹配Hadoop文件系统对追加写的需求。
XSKY HDFS Client会将Hadoop应用的Java调用,通过JNI (Java Native Interface) 技术转换为本地librgw.so的调用,并最终访问到XEOS集群。在计算节点上,需要部署XSKY HDFS Client JAR包、librgw.so及其依赖的so库和配置文件。
07XSKY HDFS Client的自动化部署XSKY HDFS Client应该在所有需要访问XEOS存储的计算节点部署。XSKY提供了自动化部署工具,用于简化部署的过程。
08XSKY MergeCommitter文件秒合技术Output Committer 是 Hadoop 中 MapReduce 的提交协议。实际是一组抽象接口,包括 Job Setup、Task Setup、Task Commit、Task Abort、Job Commit、Job Abort、Job Cleanup、Job Recovery。Hadoop 中 MapReduce 将用户提交的 job 拆分成多个 task (分别是 map task 和 reduce task)并在多个节点上执行这些 task,task 在执行完成后,将执行结果的输出通过 output commit 协议存储于最终的结果目录。
XSKY Merge Committer,通过使用对象存储的自定义元数据,与文件秒合功能解决上述问题。文件秒合可以将一个或多个对象合并为一个新对象,并保存到指定的目录中。这个新对象的内容,是被合并的所有文件内容的集合,按照输入文件列表的顺序组织。并且秒合是一个时间复杂度 O(1) 的原子操作。
09小结XSKY HDFS Client从原理上看,功能和性能都要比S3A的要强大很多,在某金融机构的实际测试表现也没有令人失望。1、性能测试根据中国信息通信研究院的《Hadoop平台性能测试方法》,一般情况下大数据平台性能测试主要考虑四个方面:SQL任务、NoSQL任务、机器学习、批处理。这里主要选择在SQL任务、NoSQL任务、批处理与开源Hadoop平台进行对比测试。2、用例说明其中批处理用例主要选择了1T数据排序的TeraSort标准测试工具;NoSQL任务选择了使用HBase Blukload工具对400G .csv文件进行数据导入测试;Hive Join的测试使用了500G+500G大表join,500M+500G大小表join,及500M+500G大小表MapJoin几个子测试用例。3、测试结果XEOS不仅在DFSIO上面表现优异,在SQL、NoSQL、批处理上的性能都有部分提升。结果如下: